import pymysql


class MysqlUtils:
    cursor = ''  # 句柄
    db = ''  # 打开数据库连接
    '''
        定义构造方法
        host：主机名
        username;用户名
        password:密码
        dbname:数据库名
        db:打开数据库连接
        cursor:获取游标句柄
    '''
    def __init__(self):   #  数据库连接
        self.host = ''
        self.username = ''
        self.password = ''
        self.dbname = ''
        self.port = 
        self.charset = 'utf8'
        self.db = pymysql.connect(host=self.host, user=self.username, passwd=self.password, db=self.dbname, port=self.port)
        self.cursor = self.db.cursor()
        print('数据库连接成功.......'+self.host+":"+str(self.port))
    # 获取所有的结果集
    def getAllResult(self, sql):
        self.cursor.execute(sql)
        results = self.cursor.fetchall()
        return results

    # 获取所有的结果集
    def getSignleResult(self, sql):
        self.cursor.execute(sql)
        results = self.cursor.fetchone()
        return results

    # 插入或更新数据
    def insertOrUdate(self, sql):
        try:
            # 这是断线重连
            try:
                self.db.ping()
            except:
                self.db()

            # 执行SQL语句
            self.cursor.execute(sql)
            print('执行sql:%s'%sql)
            if self.cursor.rowcount < 1:
                raise Exception('新增或更新失败:sql--%s' % sql)
            # 提交到数据库执行
            self.db.commit()
        except Exception as e:
            # 发生错误时回滚
            self.db.rollback()
            print(e)
        # 返回受影响的行数
        print('受影响的行数:%s'%self.cursor.rowcount)
        return self.cursor.rowcount

    # 关闭链接
    def close(self):
        self.cursor.close()
        self.db.close()
